package com.sh.rbac.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sh.rbac.domain.dto.menu.MenuQueryDTO;
import com.sh.rbac.domain.dto.menu.MenuSaveDTO;
import com.sh.rbac.domain.dto.menu.MenuUpdateDTO;
import com.sh.rbac.domain.entity.Menu;
import com.sh.rbac.domain.vo.menu.MenuNavVO;

import java.util.List;
import java.util.Set;

/**
 * @author lucky
 * @description 针对表【sys_menu(菜单表)】的数据库操作Service
 * @createDate 2024-04-04 21:47:19
 */
public interface MenuService extends IService<Menu> {

    /**
     * 获取菜单列表
     *
     * @return 菜单列表
     */
    List<MenuNavVO> getMenus();


    /**
     * 获取菜单列表
     *
     * @param menuQueryDTO 菜单查询条件
     * @return 菜单列表
     */
    List<Menu> getList(MenuQueryDTO menuQueryDTO);


    /**
     * 保存菜单
     *
     * @param menuSaveDTO 菜单保存对象
     * @return 是否保存成功
     */
    Boolean save(MenuSaveDTO menuSaveDTO);


    /**
     * 更新菜单
     *
     * @param menuUpdateDTO 菜单更新对象
     * @return 是否更新成功
     */
    Boolean updateById(MenuUpdateDTO menuUpdateDTO);


    /**
     * 更新菜单状态
     *
     * @param id     菜单ID
     * @param status 菜单状态
     * @return 是否更新成功
     */
    Boolean updateStatus(Long id, Integer status);

    /**
     * 获取菜单权限
     *
     * @return 菜单权限
     */
    Set<String> getAuth();
}
